package tier1;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;



import shared.Carte;
import shared.Joueur;
import shared.ServiceJeu;

/**
 * H�rite de application Client et impl�mente le protocole RMI
 * test
 */
public class JoueurImpl implements Joueur{

    public static void main(String args[]) throws Exception {

        // Recup�re le service <ServicePartie>
       
        Registry registry = LocateRegistry.getRegistry("localhost", 2000);
        ServiceJeu service = (ServiceJeu) registry.lookup("ServiceJeu");
          Joueur user;
		  user  = (Joueur) UnicastRemoteObject.exportObject(new JoueurImpl(), 0);
        // Rend la main � <User>

		  service.connexion(user);
		  System.out.println("Client Abonne");
		  boolean estAbonne=true;
    }
    
    private static final long serialVersionUID = 1L;
    
    private int _id = 0;
    private String _nom = "";
    private ArrayList<Carte> cartes = new ArrayList<Carte>();
   
    public void Joueur() throws RemoteException{	
    }   
    
    public void Joueur(String nom) throws RemoteException{ 
    	_nom = nom; 
    }
   
    public void setNom(String name) throws RemoteException{ 
    	_nom = name; 
    }
    
    public void setId(int id) throws RemoteException{ 
    	_id = id; 
    }
    
    public String getNom() throws RemoteException{ 
    	return _nom; 
    }
    
    public int getId() throws RemoteException{ 
    	return _id; 
    }
   
    /**
     * Donne ses cartes au joueur
     * @param cartes
     */
    public void setMain(ArrayList<Carte> cartes) { 
    	cartes = cartes; 
    }
   
    /**
     * Ajoute des cartes aux cartes du joueur
     * @param carte
     */
    public void addCartes(ArrayList<Carte> cartes) throws RemoteException{
        for(Carte carte : cartes)
            cartes.add(carte);
    }
   
    /**
     * Supprime une carte aux cartes du joueur
     * @param carte
     */
    public void removeCarte(Carte carte) throws RemoteException{ 
    	cartes.remove(carte); 
    }
   
    /**
     * @return nombre de cartes que poss�de le joueur
     */
    public int getNbCartes() throws RemoteException{ 
    	return cartes.size(); 
    }

	@Override
	public int getScrore() throws RemoteException{
		// TODO Auto-generated method stub
		return 0;
	}
}

